httpClient4.x忽略证书直接调用 - CSDN博客

创建时间:2018/1/8 11:29
来源:http://blog.csdn.net/mn960mn/article/details/48520199


httpClient4.x忽略证书直接调用

  1. <dependency>  
  2.     <groupId>org.apache.httpcomponents</groupId>  
  3.     <artifactId>httpclient</artifactId>  
  4.     <version>4.5</version>  
  5. </dependency>  


代码如下:

  1. package com.lala.httpclient;  
  2.   
  3. import java.net.URI;  
  4. import java.security.cert.CertificateException;  
  5. import java.security.cert.X509Certificate;  
  6.   
  7. import javax.net.ssl.SSLContext;  
  8. import javax.net.ssl.TrustManager;  
  9. import javax.net.ssl.X509TrustManager;  
  10.   
  11. import org.apache.http.HttpEntity;  
  12. import org.apache.http.client.methods.CloseableHttpResponse;  
  13. import org.apache.http.client.methods.HttpPost;  
  14. import org.apache.http.impl.client.CloseableHttpClient;  
  15. import org.apache.http.impl.client.HttpClientBuilder;  
  16. import org.apache.http.ssl.SSLContextBuilder;  
  17. import org.apache.http.ssl.TrustStrategy;  
  18. import org.apache.http.util.EntityUtils;  
  19.   
  20. public class Main   
  21. {  
  22.     static final String url = "https://www.xxxxx.cn/api/v1/rest.do";  
  23.       
  24.     /** 
  25.      * 方法一 
  26.      * @param clientBuilder 
  27.      */  
  28.     public static void configureHttpClient(HttpClientBuilder clientBuilder)   
  29.     {  
  30.         try  
  31.         {  
  32.             SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(nullnew TrustStrategy()  
  33.             {  
  34.                 // 信任所有  
  35.                 public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException   
  36.                 {  
  37.                     return true;  
  38.                 }  
  39.             }).build();  
  40.               
  41.             clientBuilder.setSSLContext(sslContext);  
  42.               
  43.         }catch(Exception e)  
  44.         {  
  45.             e.printStackTrace();  
  46.         }  
  47.     }  
  48.       
  49.     /** 
  50.      * 方法二 
  51.      * @param clientBuilder 
  52.      */  
  53.     public static void configureHttpClient2(HttpClientBuilder clientBuilder)   
  54.     {  
  55.         try  
  56.         {  
  57.             SSLContext ctx = SSLContext.getInstance("TLS");    
  58.             X509TrustManager tm = new X509TrustManager()  
  59.             {    
  60.                     public void checkClientTrusted(X509Certificate[] chain,  String authType) throws CertificateException   
  61.                     {  
  62.                           
  63.                     }    
  64.                     public void checkServerTrusted(X509Certificate[] chain,  String authType) throws CertificateException   
  65.                     {  
  66.                           
  67.                     }    
  68.                     public X509Certificate[] getAcceptedIssuers()   
  69.                     {    
  70.                         return null;    
  71.                     }    
  72.             };    
  73.             ctx.init(nullnew TrustManager[]{tm}, null);    
  74.               
  75.             clientBuilder.setSSLContext(ctx);  
  76.               
  77.         }catch(Exception e)  
  78.         {  
  79.             e.printStackTrace();  
  80.         }  
  81.     }  
  82.       
  83.     public static void main(String[] args)throws Exception  
  84.     {  
  85.         HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();  
  86.           
  87.         configureHttpClient2(httpClientBuilder);  
  88.           
  89.         CloseableHttpClient httpClient = httpClientBuilder.build();  
  90.           
  91.         HttpPost post = new HttpPost();  
  92.           
  93.         post.setURI(new URI(url));  
  94.           
  95.         CloseableHttpResponse resp = httpClient.execute(post);  
  96.           
  97.         HttpEntity httpEntity = resp.getEntity();    
  98.           
  99.         System.out.println(EntityUtils.toString(httpEntity));  
  100.           
  101.         httpClient.close();  
  102.     }  
  103. }